3.4. TC CALDAV
Work over last 4 months:
Scheduling Drafts — Worked designing on a mechanism for creating drafts of scheduling objects which allows event/tasks to be created without automatic scheduling operations being performed by the server until the organizer “commits” the draft as ready for scheduling. The current design is as follows:
Drafts are stored as resources in calendar collections using a specific
DAV:resourcetype
value (NOT in a single “drafts” collection)To create a
draft: POST /;add-member
— server returns location of created draftTo “commit” a
draft: POST //?action=create
— server deletes the draft and adds a new non-draft resource (it may use the same URI/UID or a different one — location is returned)Open issue on how to specify draft
DAV:resourcetype
at creation time — three possibilities:Use a query parameter on the
POST
URL, e.g.?resourcetype=calendar-draft
Use a header field in the
POST
request, e.g.DAV-resourcetype: calendar-draft
Use a multipart media type for the
POST
body that combinesPUT+PROPPATCH
to do atomic setting of WebDAV properties and resource body all in one go, e.g. “multipart/webdav-resource” with the first part being application/xml (WebDAVPROPPATCH
body) and the second part being the data for the resource body.
A mechanism for creating drafts from existing events was discussed and tabled as future work
Server Information Document (Rich Capabilities) — Worked on designing a structured resource to organize the DAV services and features available on a server to replace the already bloated DAV response header field. The current design is as follows:
The resource will be an XML document containing elements describing one or more “services”, e.g. CalDAV, CardDAV, generic WebDAV
Each “service” element will contain elements describing one or more “features” of that service, e.g. DAV level 1, calendar-access, sharing, etc
Open issue on how to list DAV features present in all services — two possibilities:
List global “features” at the top of the XML document outside of any “services”
List the global “features” inside a specially named “service”, e.g. “*”
A mechanism for including global/constant-valued DAV properties was discussed and tabled as future work
Work for the next four months:
How to handle visibility of drafts by non-draft-aware clients? Keep resource-type as calendar?
More ioptesting on managed attachments, especially attachments on recurrences
Make managed attachments spec depend on server info document — probably requires revisiting including global/static/constant properties
Move WebDAV Prefer through IETF
Generate a client/server capability matrix for publication